<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>04_函数</title>
</head>
<body>
<!--
1. 什么是函数?
  * 具有特定功能的n条语句的封装体
  * 只有函数是可执行的, 其它类型的数据是不可执行的
  * 函数也是对象
2. 为什么要用函数?
  * 提高代码复用
  * 便于阅读和交流
3. 如何定义函数?
  * 函数声明
  * 表达式
4. 如何调用(执行)函数?
  * test()：直接调用
  * obj.test()：通过对象调用
  * new test()：通过new调用
  * test.call/apply(obj):临时让test成为obj的方法进行调用
5. 函数的关键字
	 this
	 arguments.length是接受实参的个数
	 函数名.length是传递形参的个数		
-->
<script type="text/javascript">

  function f1 () { // 函数声明
    console.log('f1()')
  }
  var f2 = function () { // 表达式
    console.log('f2()')
  }

 
  var obj={}
  function test(){
    this.name='临时让test成为obj的方法进行调用'
  }
  // obj.test()//obj.test is not a function 不能直接调用，obj没有test方法
  //可以让一个函数成为指定任意对象的方法进行调用
  test.call(obj)
  console.log(obj.name==='临时让test成为obj的方法进行调用')//true


  //函数也是对象 
  function fn() {}
  console.log(fn instanceof Object) // 是Object类型的实例
  console.log(fn.prototype) // 内部有属性
  console.log(fn.call) // 内部有方法
  fn.t1 = 'atguigu' // 可以添加属性
  fn.t2 = function () { // 可以添加方法
    console.log('t2() '+this.t1)
  }
  fn.t2()//t2()atguigu
</script>
</body>
</html>








